package erros

import (
	"errors"
	"fmt"
)

func EncodeCodeMsg(code int, format string, args ...any) string {
	msg := fmt.Sprintf(format, args...)
	codeMsg, ok := CodeStrMap[code]
	if ok {
		if msg == "" {
			msg = codeMsg
		} else {
			msg = codeMsg + ", " + msg
		}
	}
	return msg
}

// DecodeCodeMsg 解析error的code和msg值
func DecodeCodeMsg(err error) (int, string) {
	if err == nil {
		return OK.Code, OK.Msg
	}

	var typed *Error
	ok := errors.As(err, &typed)
	if ok {
		return typed.Code, typed.Msg
	}

	return CodeInternalError, InternalError.Msg + ", " + err.Error()
}
